home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / tools / rb / jlcd100.lzh / JLCD / JLCDCALL.MAC next >
Text File  |  1997-12-28  |  5KB  |  159 lines

  1. .ifndef    __JLCDCALL__
  2.  
  3. __JLCDCALL__    equ    1
  4.  
  5. JLCD    .macro    num
  6.     move.l    #$4A00+(num),d1    
  7.     moveq.l    #$3B,d0        ;_JOYGET
  8.     trap    #$0F        ;IOCS
  9.     .endm
  10.  
  11. _JLCD_VER    equ    $00    ;常駐およびバージョンのチェック
  12. _JLCD_INIT    equ    $01    ;初期化
  13. _JLCD_STOP    equ    $02    ;停止
  14. _JLCD_INST    equ    $03    ;命令(教えこむ)
  15. _JLCD_FONT    equ    $04    ;外字定義
  16. _JLCD_PRINT    equ    $05    ;表示
  17. _JLCD_PRINT2    equ    $06    ;表示2
  18.  
  19.     *-----------------------------------------------
  20.     *        確認 _JLCD_VER
  21.     *-----------------------------------------------
  22.     *
  23.     *   in    d1.l = $4A00
  24.     *
  25.     *  out    d0.w == $4A4C 
  26.     *         != $4A4C エラー
  27.     *    d0.l(上位ワード) == バージョン $0100
  28.     *
  29.     * 戻り値が $4A4C であれば、JLCDDRV が登録されている。
  30.     * ポートに対してそれぞれ反応が違うことに注意。
  31.     *
  32.  
  33.     *-----------------------------------------------
  34.     *        初期化 _JLCD_INIT
  35.     *-----------------------------------------------
  36.     *
  37.     *   in    d1.l = $4A01
  38.     *    d2.l = モード
  39.     *        -1; アプリ使用状況のみチェック
  40.     *         0; 白窓通常モード。8255 の初期化と時計、
  41.     *         白窓を行う。
  42.     *         1; 白窓スタンバイ状態。8255 の初期化後、
  43.     *         ロゴを出すだけでなにもしない。
  44.     *
  45.     *  out    d0.l == 0 ; 初期化成功
  46.     *        1 ; 他のアプリが使用している(d2=1,-1 の時のみ)
  47.     *
  48.     *
  49.     * モード 0 の場合 LCD を初期化し、時計にする。登録されてい
  50.     *る外字の再登録もする。シフトキー+[BS]でもこれと同じ。
  51.     *
  52.     * モード 1 の場合 LCD を初期化し、占領する。アプリで
  53.     *常時占領する場合はこれで LCD を占領すること。でないと、
  54.     *時計が表示されます(笑)。ただし、途中で LCD がハングっ
  55.     *た場合(復活は シフトキー+[BS]で出来る)、
  56.     *
  57.  
  58.     *-----------------------------------------------
  59.     *        停止 _JLCD_STOP
  60.     *-----------------------------------------------
  61.     *   in    d1.l = $4A02
  62.     *
  63.     *  out    d0.l == 0 ; 停止成功
  64.     *
  65.     * JLCDDRV の動作を停止します。JOY PORT を使う他の
  66.     *ソフトを使う場合、停止して下さい。シフトキー+[BS]
  67.     * でもこれと同じ。
  68.     *
  69.  
  70.     *-----------------------------------------------
  71.     *        命令 _JLCD_INST
  72.     *-----------------------------------------------
  73.     *   in    d1.l = $4A03
  74.     *    d2.l = 0 ; なにもしない。戻り値のみを確認したい時用。
  75.     *           1 ; 全画面クリア。表示座標を $00(0,0)に。
  76.     *           2 ; 表示座標を $00(0,0)にし、シフトしていた表示も元に戻す。
  77.     *            など、インストラクション設定(後述)
  78.     *
  79.     *  out    d0.l ==  0 ; 成功
  80.     *         1 ; なんかの都合で LCD が破壊された。命令は実行している。
  81.     *        -2 ; JLCDDRV が停止している
  82.     *
  83.     * LCD にコントロール命令を出します。LCD を占領(初期
  84.     *化1 の d2=1)していない場合、基本的に使わないで下さい。
  85.     *命令によっては時計表示に支障をきたす可能性もあります。
  86.     *
  87.  
  88.     *-----------------------------------------------
  89.     *        外字定義  _JLCD_FONT
  90.     *-----------------------------------------------
  91.     *   in    d1.l = $4A04
  92.     *    d2.l = 外字 No.(0~7)
  93.     *    (a1) = 外字イメージ 8byte
  94.     *
  95.     *  out    d0.l ==  0 ; 成功
  96.     *        -2 ; JLCDDRV が停止している
  97.     *
  98.     * 外字を登録します。
  99.     *
  100.     * 外字 No.6,7 は白窓(エラー)で使用してしまいま
  101.     *す。アプリ使用中(LCD 占領)でも No.6,7 は破壊
  102.     *されることがあります。
  103.     *
  104.  
  105.     *-----------------------------------------------
  106.     *        文字列表示  _JLCD_PRINT
  107.     *-----------------------------------------------
  108.     *   in    d1.l = $4A05
  109.     *    d2.l = 座標
  110.     *    (a1) = 表示文字列
  111.     *
  112.     *  out    d0.l ==  0 ; 正常終了
  113.     *        -1 ; 白窓や PRINT2 で表示しているので表示出来ない
  114.     *        -2 ; 停止している
  115.     *
  116.     * 指定座標から文字列を表示します。bit 31 が 1 なら LCD
  117.     *をクリアしてから表示します。
  118.     * 座標に -1 を指定した場合、続きから書きます。ただし、改
  119.     *行はしません。また外字登録を行うと座標は初期化($00)さ
  120.     *れてしまうので注意。
  121.     *
  122.     * 基本的にこのコールは LCD を占領しているソフトがつかう
  123.     *ものです。占領せず、一時的に一定時間表示させたい場合は
  124.     *$4A60 を使用して下さい。
  125.     *
  126.  
  127.     *-----------------------------------------------
  128.     *        文字列表示2  _JLCD_PRINT2
  129.     *-----------------------------------------------
  130.     *   in    d1.l = $4A06
  131.     *    d2.l = 座標
  132.     *    d3.l = タイム
  133.     *    (a1) = 表示文字列
  134.     *
  135.     *  out    d0.l ==  0 ; 正常終了
  136.     *        -1 ; 白窓を表示しているので表示出来ない
  137.     *        -2 ; JLCDDRV が停止している
  138.     *
  139.     * 指定座標から文字列を表示します。bit 31 が 1 なら LCD
  140.     *をクリアしてから表示します。
  141.     * 座標に -1 を指定した場合、続きから書きます。
  142.     * 1行目の端まで来たら2行目に改行します。ただし改行判定の
  143.     *ため表示座標はかならずこのコールの d2 で指定して下さい。CALL5
  144.     *で指定したものや、CALL3 により座標を指定した場合は思ったとこ
  145.     *ろで改行してくれないことがあります。
  146.     *
  147.     * タイムが1以上ならそのタイム時間(単位 1/100s)
  148.     *表示し続け、その後初期化します。0 なら消去はせずずっと表示
  149.     *しておきます。ただし、LCD を占領していない場合、時計に消され
  150.     *ることになります(時計の左側は書き替えないためサンプルの 
  151.     *JLCDCON1 のように使えます)。
  152.     *
  153.     * 他のプログラムが LCD を占領している場合でも、この CALL 
  154.     *で表示してしまうことが出来ます。本コールで表示中は他の表示
  155.     *($4A05)を制限することが出来ます。
  156.     *
  157.  
  158. .endif
  159.